A RESTful API is based on representational state transfer (REST) technology, an architectural style and approach to communications often used in web services development. REST is popular due to its simplicity and because it builds upon existing systems and features of HTTP in order to achieve its objectives. REST is built on the technologies of the web, allowing systems built with it to exhibit loose coupling, good scalability and make use of the large number of tools available to build with it. An Application Programming Interface (API) is code that allows two software programs to communicate with each other. An API Specification (or contract) identifies the proper way for a developer to write a program requesting services from an operating system or other application.
Because REST is an architectural style, programmers are given a good amount of flexibility. As a result, inexperienced teams creating RESTful APIs, in the absence of guidance, tend to end up with many questions or implement something that is problematic.
These and other drawbacks currently exist.